package com.alili_tv.system.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 视频/合集表
 * </p>
 *
 * @author baomidou
 * @since 2023-03-17
 */
@Getter
@Setter
@ToString
public class Video implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private Long id;

    /**
     * 标题
     */
    private String title;

    /**
     * 简介
     */
    @TableField("`describe`")
    private String describe;

    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;

    /**
     * 所属分区
     */
    private Integer channel;

    /**
     * 视频文件名
     */
    private String videoPath;

    /**
     * 封面文件名
     */
    private String coverPath;

    /**
     * 视频总时长
     */
    private Integer totalTime;

    /**
     * 视频类型, 0：自制，1：转载
     */
    private Integer type;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 播放数
     */
    private Long viewCount;

    /**
     * 弹幕数
     */
    @TableField(exist = false)
    private Long barrageCount;
    /**
     * 点赞数
     */
    @TableField(exist = false)
    private Long likeCount;

    /**
     * 收藏数
     */
    @TableField(exist = false)
    private Long collectCount;

    /**
     * 评论数
     */
    @TableField(exist = false)
    private Long commentCount;

    /**
     *
     */
    @TableField(exist = false)
    private User user;

    /**
     * 用户是否点赞
     */
    @TableField(exist = false)
    private Boolean isLike;

    /**
     * 用户是否收藏
     */
    @TableField(exist = false)
    private Boolean isCollect;

    /**
     * 视频的标签
     */
    @TableField(exist = false)
    private List<Tag> tags;

    /**
     * 排行榜中视频热度分数
     */
    @TableField(exist = false)
    private Double score;

    @Setter
    @Getter
    @ToString
    public static class VideoIdTitle implements Serializable {
        @Serial
        private static final long serialVersionUID = 1L;
        private Long id;
        private String title;
    }
}
